package com.bzkj.basicinfo.service.yxl;

import com.bzkj.basicinfo.domain.yxl.YxlBillsInDetailList;
import com.bzkj.basicinfo.domain.yxl.YxlBillsList;
import com.bzkj.basicinfo.domain.yxl.YxlPrintDto;
import com.bzkj.basicinfo.domain.yxl.vo.YxlBillsListVo;
import com.bzkj.basicinfo.domain.yxl.vo.YxlExportBillsListVo;
import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @Author：swj
 * @Desc
 * @Date：2025/7/31 9:04
 */
public interface YxlBillsService {
    /**
     * 查询出库单列表(暂时不用)
     *
     * @return
     */
    List<YxlBillsList> selectBillsOutList(YxlBillsList entity);

    /**
     * 根据单据号查询明细
     * @param billsId
     * @return
     */
    AjaxResult selectBillsOutListByBillsId(String billsId);

    AjaxResult selectBillsInListByBillsId(String billsId);


    /**
     * 查询出库单据汇总（暂时不用）
     * @param entity
     * @return
     */
    TableDataInfo queryBillsOutList(YxlPrintDto entity, Integer pageNum, Integer pageSize);

    /**
     * 查询出库单据汇总单据列表（导出使用）
     * @param entity
     * @return
     */
    List<YxlExportBillsListVo> exportBillsOutList(YxlPrintDto entity);

    /**
     * 查询出库单据明细
     * @param entity
     * @return
     */
    AjaxResult queryBillsOutDetailList(YxlPrintDto entity, Integer pageNum, Integer pageSize);

    /**
     * 查询入库单列表
     *
     * @return
     */
    List<YxlBillsList> selectBillsInList(YxlBillsList entity);

    /**
     * 查询入库明细
     * @param entity
     * @return
     */
    List<YxlBillsInDetailList> selectBillsInDetailList(YxlPrintDto entity);

    /**
     * 拼箱贴打印
     * @param dto
     * @return
     */
    AjaxResult printSpell(YxlPrintDto dto);

    /**
     * 单据退回
     * @param dto
     * @return
     */
    AjaxResult rejectBill(YxlPrintDto dto);
//TODO 出库单据汇总导出
    /**
     * 导出出库单据汇总
     * @return
     */
    AjaxResult exportOutBillList(YxlPrintDto entity, Integer pageNum, Integer pageSize);

    /**
     * 导出出库单据明细
     * @return
     */
    AjaxResult exportOutBillDetailList(YxlPrintDto entity, Integer pageNum, Integer pageSize);

    /**
     * 查询提单数据
     * @param stoId
     * @param userName
     * @return
     */
    AjaxResult queryPdaBillsCheck(String stoId,String startDate,String endDate,String userName,String billsMode,String billsId
            ,Integer pageNum,Integer pageSize);

    /**
     * 查询erp里所有剂型
     * @return
     */
    AjaxResult queryErpJiXing();

    /**
     * 根据剂型去查询映射的erp剂型
     * @param areaId
     * @return
     */
    AjaxResult queryJiXingMapList(String areaId);

    AjaxResult cancelCheckById(String id,String billsId);

    /**
     * erp收货单数据
     * @return
     */
    AjaxResult queryErpReceipt(String billsId,String ywy,String startDate,String endDate,Integer pageNum,Integer pageSize);

    /**
     * erp收货明细数据
     * @param billsId
     * @return
     */
    AjaxResult queryErpReceiptDetail(String billsId);

    /**
     * 确认收货接口
     * @return
     */
    AjaxResult confirmReceipt(String billsId);
    /**
     * 确认收货接口(单一药品收货)
     * @return
     */
    AjaxResult confirmReceiptBySpid(String billsId,String spid,String num,String price);

    /**
     * 拒收接口
     * @param billsId
     * @param spid
     * @param num
     * @param price
     * @return
     */
    AjaxResult rejectReceiver(String billsId,String spid,String num,String price,String remark);

    /**
     * 查询收货记录
     * @param billsId
     * @param drugId
     * @return
     */
    AjaxResult queryWmsReceiptLog(String billsId,String drugId);

    /**
     * 已收货列表
     * @param billsId
     * @param drugName
     * @return
     */
    AjaxResult queryWmsReceived(String billsId, String drugName,String customer,String startDate,String endDate,Integer pageNum,Integer pageSize);



}
